<div class="apiDetail">
    <div>
        <h2><span>Function(treeId, treeNodes)</span><span class="path">setting.callback.</span>beforeDrag
        </h2>
        <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span>
        </h3>
        <div class="desc">
            <p></p>
            <div class="longdesc">
                <p>Specify callback function to be called before the drag node callback, The return
                    value controls whether the drag node callback will execute.</p>
                <p>Default: null</p>
            </div>
        </div>
        <h3>Function Parameter Descriptions</h3>
        <div class="desc">
            <h4><b>treeId</b><span>String</span></h4>
            <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the id of the
                containing tree.</p>
            <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
            <p>A collection of the nodes being dragged</p>
            <p class="highlight_red">v3.x allows the drag and drop of multiple sibling nodes, so
                this parameter's type is changed to Array(JSON).</p>
            <p class="highlight_red">If the selected nodes aren't sibling nodes, you can only drag
                one node.</p>
            <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
            <p>return true or false</p>
            <p class="highlight_red">If return false, zTree will abort the drag and drop, and will
                not trigger the 'onDrag / beforeDrop / onDrop' sequence of callbacks.</p>
        </div>
        <h3>Examples of setting & function</h3>
        <h4>1. disable drag completely (by returning false)</h4>
        <pre xmlns=""><code>function myBeforeDrag(treeId, treeNodes) {
    return false;
};
var setting = {
	edit: {
		enable: true
	},
	callback: {
		beforeDrag: myBeforeDrag
	}
};
......</code></pre>
    </div>
</div>